package com.itheima.utils;

import com.itheima.superclass.Person;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

public class Utils {
    public static int stuId ;//学员ID的初始值
    public static int teaId ;//教师ID的初始值
    static {
        stuId = 0;
        teaId = 0;
        //后期可以改为从文件/数据库读取初始值
    }
    public static int birthdayToAge(String birthday)  {
        if (birthday == null) {
            return 0;
        }
        //************第一步：判断当前日期是否在生日日期之前********************/
        Date birthDate = null;
        try {
            birthDate = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
        } catch (ParseException e) {
            e.printStackTrace();
            return -1;
        }
        //获取当前系统时间
        Calendar cal = Calendar.getInstance();
        Calendar birthCalendar = Calendar.getInstance();

        birthCalendar.setTime(birthDate);

        //如果出生日期大于当前时间，则抛出异常
        if (cal.before(birthCalendar)) {
            return -1;
        }
        //*************第一步结束*****************************************/
        //*************第二步：初步计算年龄*********************************/
        //取出系统当前时间的年、月、日部分
        int yearNow = cal.get(Calendar.YEAR);//2021
        int monthNow = cal.get(Calendar.MONTH);//11
        int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
;
        //取出出生日期的年、月、日部分
        int yearBirth = birthCalendar.get(Calendar.YEAR);//1999
        int monthBirth = birthCalendar.get(Calendar.MONTH);//12
        int dayOfMonthBirth = birthCalendar.get(Calendar.DAY_OF_MONTH);
        //当前年份与出生年份相减，初步计算年龄
        int age = yearNow - yearBirth;//22
        //*************第二步结束*****************************************//
        //*************第三步：计算今年是否过生日了**************************//
        //当前月份与出生日期的月份相比，如果月份小于出生月份，则年龄上减1，表示不满多少周岁
        if (monthNow <= monthBirth) {//当：当前月 <= 生日月 ，就有可能还没过生日
            //如果月份相等，在比较日期，如果当前日，小于出生日，也减1，表示不满多少周岁
            if (monthNow == monthBirth) {//当前月 = 生日月
                if (dayOfMonthNow < dayOfMonthBirth) age--;//当前日 < 生日日，没过生日，然后：age-1
            }else{
                age--;
            }
        }
        //************第三步结束******************************************//
        return age;

    }
    //打印ArrayList<? extends Person>的方法
    public static void printPersonList(ArrayList personList) {
        System.out.println("************************************************************************************");
        System.out.println("编号\t\t姓名\t\t性别\t\t生日\t\t\t年龄\t\t描述");
        for (int i = 0; i < personList.size(); i++) {
            Person p = (Person)personList.get(i);
            System.out.println(personList.get(i));
        }
        System.out.println("************************************************************************************");
    }
    //打印Person的方法
    public static void printPerson(Person person) {
        System.out.println("************************************************************************************");
        System.out.println("编号\t\t姓名\t\t性别\t\t生日\t\t\t年龄\t\t描述");
        System.out.println(person );
        System.out.println("************************************************************************************");
    }
}
